Texturing method and apparatus

ABSTRACT

A method and apparatus is disclosed for conveying and applying texturing instructions within a very speed, or bandwidth environment, or where storage capacity is limited; the invention and of particular use in image displaying mobile telephones ( 16 ), but also applies to image data storage ( 184, 186, 188, 190, 192 ) and use on the Internet. Image texturing is defined by a texture string ( 198 ) defining a seed number ( 200 ) for pseudo random generation of z axis displacement of pixels from an initial surface, a roughness value ( 202 ) for the surface, warp function values ( 204, 206 ), distortion function values ( 208, 210 ), texturing cell style and size data ( 212, 214 ) colour information ( 216, 218, 220, 222, 224, 226 ) and indication of where the texture is to be used ( 228 ). Cells ( 20 ) tile and wrap.

The present invention relates to the surface texturing of graphic imagesfor display on a screen. More particularly, the present inventionrelates to compact methods for applying surface textures to graphicimages.

A key feature of most three-dimensional computer models, for viewing intwo dimensions on a screen, is the selection of suitable texture maps.Texture maps are used to provide details of various surface properties,such as colour, opacity, roughness, shading, transparency, and so on.Often, texture maps are created from photographs or scanned images. Thiscan result in very large file sizes.

New applications of texture maps, such as in images transmitted to beviewed on mobile telephone displays, require a very small bandwidth.There is simply not enough time to send large files. The presentinvention seeks to provide a method and apparatus apt for use withmobile telephones.

It is a problem of image storage on discs that the images take up verylarge amounts of space. The texturing information forms a large part ofthe required storage. The present invention seeks to provide an improvedmethod and apparatus for image storage on discs, allowing storage ofmore images on the same disc.

In a limited band width or capacity situation, the present inventionseeks to provide a means whereby more surface texture can be transmittedin a fixed time, or over a fixed bandwidth, or stored in a fixed space.

Users of the World Wide Web are often, with good reason, impatient. Auser will wait only a certain amount of time before abandoning a webpage and going elsewhere. By allowing the rapid transmission of texturedata, the present invention seeks to provide a means whereby web pagesare more rapidly made available.

In general terms, the present invention applies to any application whichrelies on the general appearance of an image rather than the specificsof an image itself, and which relies on limited storage or bandwidth.The present invention is particularly useful for display of backgroundimages and spot graphical effects on web pages, generation of a widerange of paper texture effects for paint programmes, display of pleasingimages on storage limited devices such as palm top computers, andefficient storage and transmission of very large high resolutiontextures for printing.

According to a first aspect, the present invention consists in a methodof generating a surface texture in an image, comprising the steps of:employing a texture of pixels; allocating a random value for each pixelin the field; moving the pixels; dividing the texture into wrappablecells; and allocating a colour to each pixel.

The first aspect further provides that the step of allocating a randomvalue to each pixel includes controlling the roughness of the randomvalues.

The first aspect further provides that the step of moving the pixelsincludes warping the pixels.

The first aspect further provides that the step of moving the pixelsincludes distorting the pixels.

The first aspect, further provides that the step dividing the textureinto wrappable cells includes the step of selecting the shape of thecells.

The first aspect, further provides that the step dividing the textureinto wrappable cells includes the step of selecting the size of thecells.

The first aspect of the invention, further, provides that the step ofallocating a colour to each pixel includes taking account of theposition of the pixel.

The first aspect of the invention, further, provides that the step ofallocating a colour to each pixel includes taking account of themovement of the pixel.

The first aspect of the invention, further, provides that the step ofallocating a colour to each pixel includes taking allocating from withina selected range of colours.

The first aspect of the invention further provides for use of a computerprogram to generate the surface texture.

The first aspect of the invention further provides for use of a texturedata string to generate the surface texture.

According to a second aspect, the present invention consists in anapparatus, operating according to the method of the first aspect.

According to a third aspect, the present invention consists in acomputer program, operating according to the first aspect,

According to a fourth aspect, the present invention consists in a memorydevice, bearing a copy of the computer program.

According to a fifth aspect, the present invention consists in a texturestring message.

According to a sixth aspect, the present invention consists in acomputer device, containing a program to cause it to operate accordingto the first aspect.

According to a seventh aspect, the present invention consists in acomputer, operative to generate the texture data string.

The invention is further explained, by way of an example, by thefollowing description, read in conjunction with the appended drawings inwhich:

FIG. 1 shows a schematic view of the general situation wherein thepreferred embodiment of the invention is employed.

FIG. 2A-FIG. 2E show examples of different textures, having differentstyles of cell, used in the present invention.

FIG. 3A and FIG. 3B show the wrapping feature of the textures of FIG. 1,in this instance showing tessellating cells.

FIG. 4A and FIG. 4B illustrate the wrapping of textures of FIG. 1 usingmatching cells.

FIG. 5 shows an object, to be covered with a surface texture, inrelation to the cells of a texture.

FIG. 6 shows individual pixels within a texture.

FIG. 7 shows individual pixels prior to a randomising process.

FIGS. 8A to 8D are project views illustrating the randomising processand FIG. 8E is a flow chart of the randomising process.

FIGS. 9A to FIG. 9F show various degrees of roughness which can beachieved using the present invention.

FIG. 10A shows a linear interpolation method employed in a warpingprocess.

FIG. 10B shows a smooth interpolation method used in a warping process.

FIGS. 11A to 11E show various examples of the effects that can beachieved with warping.

FIG. 12 is a flow chart illustrating the manner in which warping isachieved.

FIG. 13 is a flow chart showing how distortion is achieved.

FIG. 14A to FIG. 14F illustrate the effect of various degrees ofwarping.

FIG. 15 shows how pixels are allocated to a cell.

FIG. 16 shows how weighting functions are applied to pixel propertiesfor use in colour selection.

FIG. 17 illustrates, in general terms, how the weighting functions ofFIG. 16 are actually applied in the formulae thereon.

FIG. 18 is a diagram illustrating the meaning of some of the pixelproperties used in relation to FIG. 17.

FIG. 19 is a diagram illustrating the meaning of the term “radial” inFIG. 17.

FIG. 20 is a diagram illustrating the meaning of the terms “edgewards”,“angle”, “cell plasma”, “pixel plasma” and “pixel plasma 2”, shown inFIG. 17.

FIG. 21 shows a diagram illustrating how the colour values derivedaccording to the flow chart of FIG. 16, are applied to select the colourof a pixel in the final texture.

FIG. 22A to FIG. 22L illustrate different textured effects which can beachieved using the present invention.

FIG. 23 is a flow chart illustrating how the image generation source ofFIG. 1 provides the receiving apparatus with a copy of the textureprogramme should the receiving apparatus not already possess the textureprogramme.

FIG. 24 shows the manner in which the texture information is conveyed tothe apparatus which is to generate and display a texture.

FIG. 25 is a flow chart showing how the apparatus, which is to displaythe textured image, achieves that effect.

FIG. 26 is a schematic diagram showing various ways in which thetexturing information and method of the present invention may betransmitted and/or stored.

FIG. 27 is an example of a texture string, a sequence of binary digits,which can be sent to a receiving apparatus so that a texture can begenerated therein and displayed.

Attention is drawn to FIG. 1 which shows one of the environments whereinthe present invention can be applied. An image generation source 10,here shown as a computer, sends image date to the telephone network 12,which, in turn, sends image data to the mobile telephone network 14 andthence to a mobile telephone 16 which displays the image 18 representedby the data from the image generation source 10. It is the object of thepresent invention to provide the image 18 which can have a wide range ofsurface textures for a very small amount of image data.

FIGS. 2A to 2E show the starting point of the surface texture generationprocess. A texture 20 is provided. The texture 20, in this instance, issquare. In general, this is a rectangle the same height and width as thefinal texture.

The texture 20 is divided into cells 22. The cells 22 form a regularpattern in the texture 20 and have the property of “wrapping”. That isto say that when the top edge 24 is, figuratively speaking, wrappedaround to join the bottom edge 26, the pattern of cells 22 iscontinuous. Equally, when the right edge 28 is wrapped around to theleft edge 30 the pattern of cells 22 is again continuous.

Different kinds of cell 22 are possible. FIG. 2A shows a pattern ofcells called “Weave”. FIG. 2B shows a pattern called “Brick”. FIG. 2Cshows a pattern called “Rectangular”. FIG. 2D shows a “Hexagonal” cell22 in the texture 20. FIG. 2E shows a cell 22 pattern “Rings”.

Attention is drawn to 3A showing the wrapping feature in more detail.FIG. 3A shows the Hexagonal cell 22 texture 20 and, immediately below, atessellation of five textures 20 in FIG. 3B showing how the Hexagonalcells 22 form a continuous pattern at every edge 24, 26, 28, 30 of thetexture. In this case, the Hexagonal cells 22 form a completetessellation.

FIGS. 4A and 4B show the same process as FIGS. 3A and 3B, this timeusing the “Rings” cells 22 otherwise shown in FIG. 2E. In this case theRings simply match at the edges 24, 26, 28, 30 and do not form, in theclassic sense, a tessellation. FIGS. 4A and 4B show that the essence, ofthe “wrapping” process wrapability depends on there being a match acrossthe edges 24, 26, 28, 30.

The surface, to be textured, is covered with a texture 20. One of thevarious types of texture 20 is selected. The cell 22 types , beingsimple, can either be generated by a mathematical algorithm or simplystored and retrieved with little use of memory. One of the cell 22 typesis selected.

FIG. 5 illustrates one possible way how cells 22 can cover an object. Anobject 32, generally represented in this example as a heptagon, iscovered in an array of cells 22 of a single texture 20 to at least itsedge. The cells 22 will be visible, in the completed image, only to theedge of the object 32, (cropped at the edge of the object 32). Theremust, however, be a degree of overlapping so that this condition can befulfilled. In practice, it is assumed that the texture repeatsinfinitely many times across the whole plane. Alternatively, the texture20 can be “wrapped” around the object or “projected onto” the object, ina manner known in the art.

The object 32 is either a two dimensional surface, or a two dimensionalprojection of a three dimensional surface, being part of an imagegenerated by, for example, but not restricted to, United Kingdom PatentApplication Number 9926131.5“Image Enhancement” filed 5 Nov. 1999 by thesame applicants.

Any other object 32 generated by any other means can be the subject ofthe present invention. All that is required is that the object 32 has asurface capable of accepting a texture.

FIG. 6 shows a texture 20. The texture 20 comprises a plurality ofspaced pixels 34 (here shown more widely spaced and fewer in number thanin reality) each having its own coordinates within the texture 20. As anexample, shown in FIG. 6 is the individual mth pixel, 34 m, has its Xand Y coordinates X(m), Y(m). The texturing process, the subject of thepresent invention, is effectively a mapping from the pixel coordinatesX(m) Y(m) to a new positional and colour value.

In FIG. 7 is a projected view of a section of the individual is shownimposed, where the X Y plane is the plane of the pixel 34, and islocated on the plane surface at Z=0. Also shown is a lower boundingplane 38, located at the value Z=−0.5 and an upper bounding plane 40,located at the value Z=+0.5. The first action in the texturing operationis to assign a number to each of the pixels 34. The assigned number isillustrated, in a figurative way in FIG. 8, as a Z value on the axes 36.Each pixel 34 is shown displaced along the Z axis by its assigned value.

FIGS. 8A to 8D show successive stages in the assignment of Z values to apixel 34, and FIG. 8E shows a flowchart of the assignment process.

Attention is drawn to FIGS. 8A to 8D. A value is assigned to each pixel34 using a pseudo random methos which generates a set of values known asa plasma field. A seed number is selected, and a roughness value. Theseed number is applied to a pseudo-random number generation process,which supplies pseudo-random values when required. Initially, apseudo-random value between −0.5 and +0.5 is assigned to each cornerpixel 34′ in the plasma field, and an initial step value of ½ isassigned.

Three pseudo-random values, P,Q and R, between −0.5 and +0.5 areselected such that their sum is 0.

The midpoint pixel 34″ along the top edge is selected and assigned avalue which is the average of the two values of the adjacent cornerpixels 34′, added to the previously selected pseudo-random value Pmultiplied by the current step value.

The midpoint pixel 34′″ along the left edge is selected and assigned avalue which is the average of the two values of the adjacent cornerpixels, added to the previously selected pseudo-random value Qmultiplied by the current step value.

The centre pixel 34″″′, is assigned a value which is the average of thefour corner pixels, added to the previously selected pseudo-random valueR multiplied by the current step value.

The field is then broken into four smaller squares, each half the sizethe step value is halved, and the process is then repeated with eachsmaller square starting with the selection of new pseudo-random valuesP′,Q′and R′, until all pixels 34 in the field have been assigned avalue.

The assigned roughness is used to modify the initial step, where thecorner pixels 34′ are given their initial pseudo-random values. If theroughness is non-zero, then this step is applies to the smaller squaresat a number of subsequent stages also, that number being determined bythe roughness value. Thus the user is able to select a second featurefor the texture.

Attention is drawn to FIG. 8E which shows a flow chart of the Z valueassignment process. From and entry 11 a set up operation 13 places theseed number in the pseudo-random number generator, initialises thepseudo-random number generator and sets the roughness value. Thereafter,a corner test 15 checks to see if the corner pixels 34′ have come intocontact with each other. This signals the end of the process. If theyhave, the assignment operation exits to a return 17, if it has not, aroughness test 19 checks to see if roughness is to be applied. If it is,a roughness operation 21 assigns random values to the corner pixels 34′.Both the roughness test 19 and the roughness operation 21 pass controlto an edge centre operation 23 which assigns values to the edge centrepixels 34″, 34′″ thereafter a centre pixel operation 25 assigns a valueto the centre pixel 34″″. A division operation 27 then divides the fieldinto four equal regions. A repeat operation 29 repeats the process foreach smaller region until the corner test 15 detects that the entirefield has been covered, each pixel 34 having been assigned a Z value.

FIGS. 9A to FIG. 9F illustrate the effects of roughness on a finalimage. In FIG. 9A, the roughness value is set to zero and the image issubstantially smooth. In FIG. 9B the roughness value is set to 1 and theimage becomes a little finer in detail. FIGS. 9C, 9D, 9E and 9F haverespective roughness values of 2, 3, 4, 5, and 6. The effect on thefinal image is clear from the figures. FIG. 9A shows a surface whichmight, for example, appear on a piece of satin fabric, whereas FIG. 9Fresembles sandpaper. Just by varying the roughness value on the same setof pixels 34 on a texture 20, with the same pseudo random numbergenerator seed number, all these different effects can be achieved.

The next action in the texture forming operation is “warping”. Warpingis the large-scale deformation of the texture. It can be used to createcontrolled curves, zig-zags and ripples in the final image. For eachaxis X, Y in the texture, a warping function is defined by the user. Forevery X coordinate the Y warping returns an off-set to be applied to theY coordinate. Similarly for every Y coordinate, the X warping functionreturns an off-set to be applied to the X coordinate.

The warping functions are defined by a list of pairs of values a, brepresenting points on a curve.

FIG. 10A shows a linear interpolation used in warping. The points 42,selected by the texture designer, of the warping curve, are shown, asseparate locations on a control icon 44. In this example, a smoothoption has not been selected. Consequently, the interpolation betweenthe points 42 is linear. A display 46 shows the resulting warpingfunction comprising straight line segments.

FIG. 10B shows the same set of points 42 as is shown in FIG. 10A, butwhere the smooth option 48 has been selected. The curve, on the display46, now smoothly interpolates between the points 42, with no sharpangles or straight lines.

For preference, the smoothing function used in FIG. 10B is a Hermitespline curve. This is just one of many smoothing functions which can beused in the invention. For example a Bezier function, or a Bezierspline, can equally be used. Those, skilled in the art, will be aware ofnumerous other functions which can fulfill this purpose.

FIGS. 11A to 11E show examples of the effects of various warpingfunctions. FIG. 11A shows the initial unwarped cell, laid out as achequerboard for clarity of illustration of effect.

FIG. 11B shows linear warping in the X axis. FIG. 11C shows smoothwarping in the X axis. FIG. 11D shows smooth warping in the Y axis. FIG.11E shows simultaneous smooth warping in the X axis and the Y axis.

The texture designer, is thus able to add a further effect to thetexture. To warp the texture, the designer selects points 42 and alinear or smooth option to achieve the desired effect.

The next stage in texture design, if required, enables the texturedesigner to apply distortion. A variable amount of pseudo-randomdistortion can be applied to a texture. This can be used to change aregular cell pattern, such as a simple square grid, into something thatlooks more “organic”, perhaps similar to the scales on a crocodile skin.

FIG. 12 is a flow chart showing the manner in which a texture 20 iswarped. Entry 50 is to a first operation 52 where the warp curve points42 (from FIG. 9 and FIG. 10) are entered by the texture designer and thepreferred manner of interpolation is selected. Thereafter, a secondoperation 54 performs the interpolation to produce the curves (as seenon the displays 46 of FIGS. 9 and 10).

A third operation 56 then selects the first pixel 34 in the texture 20.Next, a fourth operation 58 finds the y warping factor. To do this, itgoes to the curve generated in the second operation 54 at the X value ofthe pixel 34 which is being processed. The “warp(y)” value, used in alater operation, is the value of the curve at the X value of the pixel34.

A fifth operation 60 then finds the x warping factor. To do this,reference is made to the interpolated curve generated in the secondoperation 54. The Y value of the pixel 34 being processed is selected,and the value of the X coordinate, on the curve, is taken. This is the xwarping factor “warp(x)”.

A sixth operation 62 then calculates the warped x position of the pixel34 w(x) by adding the X coordinate of the pixel 34 to the product of theX coordinate of the pixel 34 and the y warping factor warp(y). A seventhoperation 64 then calculates the warped y position of the pixel 34 w(y)by adding the Y coordinate of the pixel 34 being processed to theproduct of the Y coordinate of the pixel being processed and the xwarping factor warp(x). Thereafter, a first test 66 checks to see if thelast pixel 34 in the texture 20 has been processed. If it has, theroutine goes to an exit 68. If it has not, control goes to an eighthoperation 70 which selects the next pixel 34 in the texture 20 andpasses control to the fourth operation 58. In this way, each pixel 34 inthe cell 22 is processed in turn until all of the pixels 34 have beenprocessed.

FIG. 13 is a flow chart of the process whereby distortion is added to atexture 20. From an entry 72, a ninth operation 74 selects the firstpixel 34 in the texture 20. The coordinates of a pixel 34 that thedistortion process selects are not the initial coordinates of a pixel34, X, Y which form the starting point of the process of FIG. 12, but,rather, the warped X and Y coordinates from the warping process of FIG.12, namely W(x), W(y). If there had been no warping, the coordinates ofthe pixel 34 would have remained as X, Y.

These would then be the values of W(x), W(y) had no warping taken place.

Thereafter a tenth operation 76 goes to the initial plasma field andreads the Z value (see FIG. 8) at a pixel 34, displaced from the warpedcoordinate W(x), W(y), in the Y direction by one quarter of the Z value(see FIG. 8) assigned to the pixel 34 being processed. This produces anX distortion factor f(x).

An eleventh operation 78 then reads the Z value of a pixel 34, displacedfrom the pixel 34 being processed, in the Y direction by one half of theZ value assigned to the pixel being processed (see FIG. 8).

A twelfth operation 80 then selects a width distortion factor D(w). Athirteenth operation 82 similarly, selects a height distortion factorD(h). Both the distortion factors D(w), D(h), are provided by thetexture designer as another input variable to the final texture.

Thereafter a fourteenth operation 84 calculates the distorted X valued(x) by summing the warped X coordinate W(x) with the product of the Xdistortion factor f(x) found in the tenth operation 76, and the widthdistortion factor D(w), selected in the twelfth operation 80. Afifteenth operation 86 then calculates the distorted Y value d(y) bysumming the warped Y coordinate W(y) of the pixel 34 being processedwith the product of the Y displacement factor f(y), found in theeleventh operation 78, and the height distortion factor D(h), selectedin the thirteenth operation 82. A second test 88 then checks to see ifthe last pixel 34 in the texture 20 has been processed. If all thepixels 34 in the texture 20 have been processed the distortion processpasses to exit 90. If the last pixel 34 has not been processed, asixteenth operation 92 selects the next pixel 34 to be processed andpasses control to the tenth operation 76. In this way, all of the pixels34 in the texture 20 are processed, one by one, until the whole texture20 is complete.

FIGS. 14A to 14F show examples of different degrees of distortion, on asimple square cell 22 pattern for clarity of visible effect. FIG. 14Ashows the texture 20 with no warping or distortion. FIG. 14B shows thegrid of FIG. 14A with slight distortion. FIG. 14C shows the grid of FIG.14A with a little bit more distortion than FIG. 14B. FIG. 14D shows thegrid of FIG. 14A with a fair degree of distortion. FIG. 14E shows thegrid of FIG. 14A with a great deal of distortion. FIG. 14F shows thegrid of FIG. 14A with the maximum distortion. The regular grid patternof time distortion has reached the levels of FIG. 14F achieved anappearance which is apparently, to the eye, chaotic rather than regular.Such a pattern as shown in FIG. 14F emulates the surface of materialslike marble.

FIG. 15 is a flow chart of the next activity in the preparation of atexture. Having the performed the distortion activity described in FIG.13, it now becomes necessary to find out, so that further processing cantake place, where all of the pixels 34 have moved to. From entry 94, aseventeenth operation 96 selects the first pixel 34 according to thedistorted outputs D(x), D(y) from the operation shown in FIG. 13. Aneighteenth operation 98 then calculates which cell 22 the pixel 34 underscrutiny actually occupies now that it has been moved around. The cell22 shape and size is chosen by the texture designer. The analysis ismade on the distorted coordinates d(x), d(y) where the pixels 34 havebeen moved by any warping and distortion which may have been applied. Ifno warping or distortion has been applied, of course, the pixel 34remains in its original position X,Y. The designer of the texturing canchoose various types of cell, shown in FIG. 2. The cell 22 width andheight are specified by the designer, and are usually constrained toprovide tileability) such that a whole number of cells 22 will fitacross and down the image. Using the boundaries of the selected cell 22type and size, the pixel 34 is allocated to a specific cell 22. Theposition of the pixel 34 within the cell 22 is also used to determinethe Xoffset 134 and Yoffset 136 values as shown in FIG. 18.

A third test 100 checks to see if the last pixel 34 has been processed.If it has, the activity proceeds to exit 102. If it has not, anineteenth operation 104 selects the next pixel 34 and returns controlto the eighteenth operation 98. In this way, all the pixels 34 areprocessed and allocated to a cell 22.

Attention is drawn to FIG. 16 showing the first stage of colouring thetexture 20. From an entry 106 a twentieth operation 108 selects a firstweighting function “aweigh” and a second weighting function “bweigh”.These are sets of coefficients for multiplication with properties of a“pixel vector”. These will be used, as described hereafter in relationto FIG. 17, to assist in the calculation of a colour value for eachpixel 34.

A twenty-first operation 110 then selects the first pixel 34 in thetexture. A twenty-second operation 112 then calculates a first colourvalue A according to the equation:A=0.5+sum(aweigh{i}*value{i})/sum(abs(aweigh{i}))

“Abs” is the absolute value of aweigh{i}. Value{i} is explained in FIG.17. The sum is taken over the pixel vector for the pixel beingprocessed. Thereafter a twenty-third operation 114 calculates a secondcolour value B according to the equation shown in the box of thetwenty-third operation 114.B=0.5+sum(bweigh{i}·value{i}/sum(abs(bweigh{i}))

A fourth test 116 checks to see if the last pixel 34 has been processed.If it has not, a twenty-fourth operation 118 selects the next pixels 34in the texture 20 and returns control to the twenty-second operation 112so that all the pixel 34 can be processed in turn. If the fourth test116 finds that the last pixel 34 has been processed, the process thengoes to exit 122. In this way, each pixel 34 in the texture 20 isallocated an A value and a B value.

Attention is now drawn to FIG. 17 which shows, in tabulated form, theelements in the equations shown in the twenty-second operation 112 andthe twenty-fourth operation 114 of FIG. 16. While only the equation inthe twenty-second operation 112 is explained, it is to be understoodthat the equation in the twenty-third operation 114 behaves in just thesame way, except that a different weighting table bweigh is used.

A first column 124 shows the elements that make up the vector {i} whichis used to characterise each pixel 34 in the texture 20. A second column126 shows the aweigh weighting function where each of the elementsa1-a16 corresponds to one of the 16 separate elements in the firstcolumn 124. A third column 128 shows the result of multiplying the firstcolumn 124 with the second column 124. Each element x,y etc ismultiplied by its respective coefficient a1, a2 etc in the second columnto produce the corresponding result in the third column 128. Finally foreach pixel 34, the terms appearing in the equations in the twenty-secondoperation 112 and the twenty-third operation 114 are created. Value(i)is the value of each of the elements in the first column 124. Aweigh{i}is the value of each of the elements in the third column 128. Theparticular coefficients a1-a16 in the second column 126 can be chosen bythe user when creating a texture, or can be fixed values. Certainly,when reconstructing an image, they must be the same values used for itscreation. The aweigh weighting function has different coefficientsa1-a16 than appear in the corresponding positions in the bweighweighting function. For example,sum(aweigh{i}·value{i})=[(x·a1)·(x)+(y·a2)·(y)+ . . .+(pixelrand·a16)·(pixelrand)]

Attention is drawn to FIG. 18 explaining some of the elements shown inthe first column 124 of FIG. 17.

An origin 130 is shown on a texture 20 at one of its corners. A pixelstarting point 132, in one of the cells 221 has its X offset and Yoffset measured from the edge of the cell 22′, as indicated by first andsecond arrows 134, 136. The X offset and Y offset are thus thecoordinates of the pixel starting point 132 within its particular cell22′.

A warped position 138 has coordinates w(x), w(y) measured from theorigin 130 of the texture 20. The warped position 138 is where thestarting point 132 ends up after the warping function, shown in FIG. 10,has been applied. Equally a warped and distorted position 140, where thepixel 34 arrives having been distorted away from the warped position138, has coordinates d(x) and d(y), also measured from the origin 130 ofthe texture 20.

Attention is drawn to FIG. 19 explaining the term radial in the firstcolumn 124 of FIG. 17. A line is drawn from the cell 22 centre 142,through the position of the pixel 34 to intersect an ellipse 144 whichbounds the cell 22. This ellipse has the same ratio of width to heightas the cell that it bounds. For a square cell, the ellipse has equalwidth and height and is therefore a circle. The line is used as a scale,with the value 0 being given at the cell centre 142 and the value 1being assigned at the point 146 of intersection with the ellipse 144.The value “radial” is then the proportional point on the line occupiedby the coordinates of the pixel 34. In the example shown, it can be seenthat “radial” has a value of about 0.25. “The value of radial” is alwaysless than 1.

FIG. 20 illustrates the term “edgewards”; also shown in the first column124 of FIG. 17. Instead of the line from the centre 142 of the cell 22through the pixel 34 being extended to the ellipse 144, the line isterminated at a cell edge intersection point 148. Once again, the lineto the edge of the cell 22 is used as a scale and the centre of the cell142 is assigned the value 0 and the cell edge intersection point 148 isassigned the value 1. The proportional position of the pixel 34 alongthe line gives the value “edgewards”. In the example shown, the value of“edgewards” is around 0.5. The value of “edgewards” is always less than1.

Also shown in FIG. 20 is the term “angle” which is simply the angle,between the line that was used to create “edgewards” and “radial” andthe X axis. Likewise, the term “cellplasma” is the Z value (see FIG. 8)of the plasma field at the centre of the cell 142. “Pixelplasma” is thevalue of the pixel 34 on the plasma field (the Z value, as shown in FIG.8) at the point d(x), d(y) indicated by the numeral 150 in FIG. 20.Similarly, “pixelplasma2” is the value of the plasma field at the pointd(x),((z/2)-d(y)), where z is the z value derived at d(x), d(y).

The term “cellrand”, used in the first column 124 of FIG. 17, is apseudo random value, derived from the cell coordinates. The corner, ofthe cell 22, from which xoffset and yoffset are measured, gives thecoordinates within the texture 20 of the cell 22. The cell coordinate isused as the seed for a pseudo random number generator. The result of thepseudo random generated number is “cellrand”.

The term “pixelrand” is a pseudo random value derived from thecoordinates of the pixel 34 (x,y) and, again, is a pseudo random numberin which the pixel 34 coordinates (x,y) are the seed.

Each of the values in the first column 124 of FIG. 17 is scaled so thatit lies between 0 and 1. Thus, the equations used in the twenty-secondoperation 112 and the twenty-third operation 114 always yield a valuebetween 0 and 1. The A Value and the B value represent colourcoordinates by which the individual pixels are coloured.

The A and B values can further be processed by employing a warpingfunction, similar to that shown in FIG. 10.

Attention is drawn to FIG. 21 where the A colour value and the B colourvalue are used to determine the colour of each pixel 34. The texturedesigner selects four colours C1, C2, C3 and C4 to represent the cornersof a unit square 52. The colours C1 to C4 are specified, in thisinstance, by a 24 binary digit number which identifies their colour.Which colour C1 to C4 goes on which corner of the selection square 152is entirely up to the texture designer. The texture designer can specifyany colour they to occupy any of the corners.

The pixel colour selection square 152 can be imagined as being filledwith a field of all of the different mixed hues and saturationsavailable from the corner colours C1 to C4. One of the sides of theselection square is calibrated as a scale 0 to 1 and this is the axis ofselection for the A colour selection value. Likewise, an adjacent sideof the square is also calibrated 0 to 1 and this is used as a selectionaxis for the B colour value. Whatever the value of A and B for aparticular pixel 34, the corresponding colour is selected from theselection square 152 at the coordinates A,B and applied to that pixel 34in the completed texture.

In use, the texture designer creates a texture by adjusting all of thevariables herein before mentioned, until a satisfactory image of atexture is found. This is then stretched to fit the object 32 (FIG. 7)inthe manner of stretching a rubber sheet to fit. For example, on asphere, the texture 20 may be wrapped around to envelop the surface.Equally, the texture 20 can be projected in the manner of a slideprojector, onto the surface to be textured. It can be placed andcropped. Many other methods of mapping a texture onto a surface will beknown to one skilled in the art.

FIGS. 22A to 22L show different textures which can be achieved. Sincethe drawings are in black and white it is impossible to represent therich variation in colour. That will have to be imagined.

FIG. 22A has a close resemblance to brickwork. FIG. 22B is a fabric.FIG. 22C is a pink granite. FIG. 22D is a blue marble. FIG. 22E isgalvanised steel. FIG. 22F is snake skin. FIG. 22G is leopard skin. FIG.22H is a representation of a dawn sky. FIG. 22I is wickerwork. FIG. 22Jis pine grain. FIG. 22K is a cork tile. FIG. 22L is a linoleum tile. Itcan be seen that, using the variables available and the techniquesemployed, may different textures can be achieved.

FIG. 23 is a flow chart of the activity of the image generation source10 shown in FIG. 1. The image generation source 10 can be a computer, aURL, an ISP or any other device from which a representation of an imagemay be sent.

From an entry 154 a twenty-sixth operation 156 has the image generationsource 10 interrogate the mobile telephone 16, or any other device whichis to receive the image to determine whether or not the textureprogramme is stored in that device. If a fifth test 158, on receiving aresponse from the device which is to receive the image, detects that theprogramme is present, the operation goes to exit 160. If the fifth test158 detects that the texture programme is not present in the device toreceive the image, a twenty-seventh operation 162 has the imagegeneration source 10 send the texture programme to the device 16 so thatthe device 16 can interpret a texture.

Once the texture programme is in the device, the operation, shown inFIG. 23, proceeds to exit 160.

FIG. 24 shows the activity of the image generation source 10 whensending an image to a device 18. From an entry 164 a twenty-eighthoperation 166 first sends the image to the mobile phone, computer orother device which is to show the image. Thereafter a twenty-ninthoperation 168 has the image generation source 10 send a texture stringto the mobile phone 18 or computer, or other device, that is to generatethe image. As will be explained hereafter, the texture string is asimple concatenation, in known order, of all of the selectable variableswhich determine a texture.

Once the texture string has been sent to the mobile phone or computer,this operation proceeds to exit 170.

Attention is drawn to FIG. 25 showing the activity of the cell phone 18,computer or other device which is to regenerate an image.

From an entry 172 a thirtieth operation 174 either retrieves the 3-Dobject which is to be textured from a memory, or receives the 3-D objectfrom an outside source such as the image generation source 10. Athirty-first operation 176 then either retrieves from memory, orreceives from an outside string which defines the texture to be appliedto the three dimensional object. A thirty-second operation 178 then,having received or retrieved the texture string containing theconcatenated variables which define the required texture, generates thattexture for application to the object. A thirty-third operation 180 thenapplies the surface texture to the object by projection, wrapping, orany other technique known in the art. Thereafter, the thirty-thirdoperation 180 exits 182.

Attention is drawn to FIG. 26, showing the various ways in which atexture can be employed. The image generation source 10 can store orretrieve the texture programme and texture strings, for use in providingsurface texture on objects, in a disc data store 184 such as hard disc.The programmes and texture strings can likewise be stored and retrievedon removable media 186 such as a floppy disc, pre-recorded orre-writeable compact discs 188, fixed or removable magnetic tapes 190,or in a memory 192 which can be a RAM, ROM, electrically alterable ROM,or any other electronic or physical device which can store a volatile ornon-volatile record.

Likewise, the image generation source 10 sends messages 194, via atelecommunications network or internet service or telephone system asearlier described, to and from the remote devices such as the mobilephone 18 or a remote computer terminal 196. The messages from the imagegeneration source 10 include texture strings and, on occasions, thetexture programme.

FIG. 27 illustrates the texture string, a serial concatenation of binarywords or binary digits, sent by the image generation source 10 to thedevice 18, 194, or stored and retrieved from a memory 184, 186, 188,190, 192 for the reconstruction of a texture. Although the elements arehere given a specific order, it is to be understood that a differentorder can be allocated within the invention, and some elements omittedand new elements added.

A first element 200 conveys the seed for the pseudo random numbergenerator which generates the z values for each pixel 34 as illustratedin FIG. 8. A second element 202 contains the roughness value discussedin relation to FIG. 9.

A third element 204 contains the coordinates of the warp function pointsillustrated in FIGS. 9 and 10. A fourth element 206 conveys the warpmould, selecting either a smooth or linear interpolation as discussed inconnection with FIGS. 9 and 10.

A fifth element 208 contains the width distortion factor (Dw) describedin relation to FIG. 13. A sixth element 210 contains the heightdistortion factor (Dh) also described in relation to FIG. 13.

A seventh element 212 contains data to select the cell style, asillustrated in FIG. 2A to FIG. 2E. An eighth element 214 containsinformation to determine the cell size. A ninth element 216 containseither an indication of the first weighting function aweigh, or thevalues of another weighting function for use in place of aweigh, asdescribed in relation to FIG. 16. A tenth element 218 conveys either anindication of the second weighting function bweigh, or the values of asecond weighting function to be used in its place. This is alsodescribed in relation to FIG. 16. An eleventh element 220 contains C1,the colour to be used in a first corner of the selection square 152,illustrated in FIG. 21. A twelfth element 222 contains an indication ofthe second colour C2 to be used on a second corner of the selectionsquare 152. A thirteenth element 224 contains indication of a thirdcolour C3 to be used on a third corner of the selection square 152. Afourteenth element 226 contains an indication of the fourth colour C4 tobe used on the fourth corner of the selection square 152. Finally, andoptionally a fifteenth element 228 contains an indication as to whichobject the texture, defined in the previous elements, is to be applied.

The texture string 198 may be sent as a serial data stream over a radiowave or down a telephone line, using a carrier, or not using a carrieras is appropriate. It may also be sent and stored as a series ofparallel words.

This small amount of data is sufficient to generate complex textures andoffers advantage in speed, bandwidth and storage. It also has theadvantage that the texture program is small and fast, making it suitablefor use in low capacity devices such as mobile telephones and palm topcomputers.

1-27 (cancelled) 28: A method of generating a surface texture in animage, said method comprising the steps of: providing a texture field ofpixels; allocating a random value for each of said pixels in the field;moving said pixels; dividing said texture field into wrappable cells;and allocating a color to each of said pixels.
 29. A method, accordingto claim 28, wherein said step of allocating a random value for each ofsaid pixels comprises controlling a roughness of said random value. 30.A method, according to any one of the preceding claims, wherein saidstep of moving said pixels comprise one of warping said pixels anddistorting said pixels
 31. A method, according to claim 28 or claim 29,wherein the step of dividing said texture field into wrappable cellscomprises at least one of the step of selecting a shape of said cellsand the step of selecting a size of said cells.
 32. A method, accordingto claim 30, wherein the step of dividing said texture field intowrappable cells comprises at least one of the step of selecting a shapeof said cells and the step of selecting a size of said cells.
 33. Amethod, according to claim 28 or claim 29, wherein said step ofallocating a color to each of said pixels comprises at least one of thestep of taking account of a position of the pixel, the step of takingaccount of a movement of the pixel and, the step of providing a selectedrange of colors and of taking allocation from within the selected rangeof colors.
 34. A method, according to claim 30, wherein said step ofallocating a color to each of said pixels comprises at least one of thestep of taking account of a position of the pixel, the step of takingaccount of a movement of the pixel and, the step of providing a selectedrange of colors and of taking allocation from within the selected rangeof colors.
 35. A method, according to claim 31, wherein said step ofallocating a color to each of said pixels comprises at least one of thestep of taking account of a position of the pixel, the step of takingaccount of a movement of the pixel and, the step of providing a selectedrange of colors and of taking allocation from within the selected rangeof colors.
 36. A method, according to claim 32, wherein said step ofallocating a color to each of said pixels comprises at least one of thestep of taking account of a position of the pixel, the step of takingaccount of a movement of the pixel and, the step of providing a selectedrange of colors and of taking allocation from within the selected rangeof colors.
 37. A method, according to claim 28 or claim 29, comprisingat least one of the step of using a computer program to generate thesurface texture and the step of using a texture data string to generatethe surface texture.
 38. A method, according to claim 30, comprising thestep of generating the surface texture by using a computer program whichutilizes a texture data string.
 39. A method, according to claim 31,comprising the step of generating the surface texture by using acomputer program which utilizes a texture data string.
 40. A method,according to claim 32, comprising the step of generating the surfacetexture by using a computer program which utilizes a texture datastring.
 41. A method, according to claim 33, comprising the step ofgenerating the surface texture by using a computer program whichutilizes a texture data string.
 42. A method, according to claim 34,comprising the step of generating the surface texture by using acomputer program which utilizes a texture data string.
 43. An apparatusfor generating a surface texture in an image, said apparatus comprising:means for generating a texture field of pixels; means for allocating arandom value for each pixel in the field; means for moving the pixels;means for dividing said texture field into wrappable cells; and meansfor allocating a colour to each pixel.
 44. An apparatus, according toclaim 43, wherein said means for allocating a random value to each pixelincludes means for controlling a roughness of said random values.
 45. Anapparatus, according to claim 43 or claim 44, wherein said means formoving said pixels comprises at least one of means for warping saidpixels and means for distorting said pixels.
 46. An apparatus, accordingto claim 43 or claim 44, wherein said means for dividing said texturefield into wrappable cells comprises at least one of means for selectinga shape of said cells and means for selecting a size of said cells. 47.An apparatus, according to claim 45, wherein said means for dividingsaid texture field into wrappable cells comprises at least one of meansfor selecting a shape of said cells and means for selecting a size ofsaid cells.
 48. An apparatus, according to claim 43 or claim 44, whereinsaid means for allocating a color to each pixel comprises at least oneof means for responding to a position of the pixel, means for respondingto a movement of the pixel and, means for providing a selected range ofcolors and for allocating a color from within said selected range ofcolors.
 49. An apparatus, according to claim 45, wherein said means forallocating a color to each pixel comprises at least one of meansresponsive to a position of the pixel, means for responding to amovement of the pixel and, means for providing a selected range ofcolors and for allocating a color from within said selected range ofcolors.
 50. An apparatus, according to claim 46, wherein said means forallocating a colour to each pixel comprises at least one of meansresponsive to a position of the pixel, means for responding to amovement of the pixel and, means for providing a selected range ofcolors and for allocating a color from within said selected range ofcolors.
 51. An apparatus, according to claim 47, wherein said means forallocating a colour to each pixel comprises at least one of meansresponsive to a position of the pixel, means for responding to amovement of the pixel and, means for providing a selected range ofcolors and for allocating a color from within said selected range ofcolors.
 52. An apparatus, according to claim 43 or claim 44 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 53. An apparatus, according to claim 45 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 54. An apparatus, according to claim 46 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 55. An apparatus, according to claim 47 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 56. An apparatus, according to claim 48 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 57. An apparatus, according to claim 49 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 58. An apparatus, according to claim 50 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 59. An apparatus, according to claim 51 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 60. An apparatus, according to claim 52 comprising acomputer program which utilizes a texture data string for generating thesurface texture.
 61. A computer program comprising an instruction setfor generating a surface texture in an image by employing a texturefield of pixels; allocating a random value for each of said pixels inthe field; moving said pixels; dividing said texture field intowrappable cells; and allocating a color to each of said pixels.
 62. Amemory device, bearing a copy of a computer program, said computerprogram comprising an instruction set for generating a surface texturein an image by the steps of employing a texture field of pixels;allocating a random value for each of said pixels in the field; movingsaid pixels; dividing said texture field into wrappable cells; andallocating a color to each of said pixels.
 63. A computer deviceprogrammed to generating a surface texture in an image by performing thesteps of employing a texture field of pixels; allocating a random valuefor each of said pixels in the field; moving said pixels; dividing saidtexture field into wrappable cells; and allocating a color to each ofsaid pixels.
 64. A texture string message for generating a surfacetexture in an image by the steps of: employing a texture field ofpixels; allocating a random value for each of said pixels in the field;moving said pixels; dividing said texture field into wrappable cells;and allocating a color to each of said pixels, wherein a texture datastring is used to generate the surface texture
 65. A computer programmedto generate a surface texture in an image by using a texture datastring, by the steps of: providing a texture field of pixels; allocatinga random value for each of said pixels in the field; moving said pixels;dividing said texture field into wrappable cells; and allocating a colorto each of said pixels.